/* $Id: ServiceLocator.java 
 * Copyright (C) 2011, TRAKHEES
 *  
 * Revision History
 *
 * Date  			Author 		    	Remarks
 * ---------------------------------------------------------------------------------
 *
 */
package ae.pcfc.etks.online.common.service;

import ae.pcfc.etks.online.common.exception.LocatorException;
import ae.pcfc.etks.online.common.facade.Facade;
import ae.pcfc.etks.online.common.manager.Manager;
import ae.pcfc.etks.online.wf.service.client.BaseWF;

public interface ServiceLocator {
	/**
	 * getManager
	 * Method to find the Manager class implementation for the specified class
	 * @param <T>
	 * @param type
	 * @return
	 * @throws LocatorException
	 * T
	 */
	public <T extends Manager> T getManager(Class<T> type)
			throws LocatorException;

	/**
	 * getFacadeService
	 * Method to find the facade service implementation class for the specified class
	 * @param <T>
	 * @param type
	 * @return
	 * @throws LocatorException
	 * T
	 */
	public <T extends Facade> T getFacadeService(Class<T> type)
			throws LocatorException;
	/**
	 * getWorkflowService
	 * Method to find the facade service implementation class for the specified class
	 * @param <T>
	 * @param type
	 * @return
	 * @throws LocatorException
	 * T
	 */
	public <T extends BaseWF> T getWorkflowService(Class<T> type)
			throws LocatorException;
}
